﻿using EntGuayasSLA.BL;
using EntGuayasSLA.BL.Listas;
using EntGuayasSLA.BL.Listas.Criterias;
using Ext.Net;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace EGuayas.Web.Licenciamiento.admin.tabs
{
    public partial class wucCostos : ucWuc
    {
       
        protected String PageId
        {
            get
            {
                return ReadCustomConfigPage(this.pnlCostos, this.ID);
            }

        }
       
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!X.IsAjaxRequest)
                {
                       string idExpedienteLicencia = GetSessionPage.ExpedienteLic(SessionPage.PageLicAdm);
                       float rounded = 0f;
                       float sum = 0f;
                       DetalleCostoLista listaIems = DetalleCostoLista.GetDetalleCostoLista(idExpedienteLicencia);
                       this.stoCostos.DataSource   = listaIems;
                       this.stoCostos.DataBind();

                       if (listaIems.Count != 0)
                       {
                           ExpedienteLicenciamiento objExpLic = ExpedienteLicenciamiento.GetEditableRoot(Guid.Parse(idExpedienteLicencia));
                           foreach (InfoDetalleCosto val in listaIems)
                           {
                               sum += GetValInfo(val.Valor);
                           }

                           rounded = objExpLic.Tasa / sum;
                           this.txtValorTasa.SetValue(rounded);
                          
                           rounded = objExpLic.Inspeccion;
                           this.txtIspec.Text = rounded.ToString();

                           rounded = objExpLic.Seguimiento;
                           this.txtSegu.Text = rounded.ToString();

                           X.Js.Call("wucJsCostos.totalCost", listaIems);

                       }
                       else 
                       {
                           var valorTasa = ConfigurationManager.AppSettings.Get("ValorTasa");
                           this.txtValorTasa.SetValue(valorTasa);

                           this.txtTasa.FieldLabel = valorTasa + "% Tasa";
                           rounded = GetValSettings("ValorInspeccion");
                           this.txtIspec.Text = rounded.ToString();
                           rounded = GetValSettings("ValorSeguimiento");
                           this.txtSegu.Text = rounded.ToString();
                       
                       
                       }

                }
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }

        private  float GetValSettings(string valId)
        {
            float rounded = 0f;
            float.TryParse(ConfigurationManager.AppSettings.Get(valId), out rounded);
            float.TryParse(string.Format("{0:n2}", (Math.Truncate(rounded * 100) / 100)), out rounded);
            return rounded;
        }
        private float GetValInfo(string valData)
        {
            float rounded = 0f;
            float.TryParse(valData, out rounded);
            float.TryParse(string.Format("{0:n2}", (Math.Truncate(rounded * 100) / 100)), out rounded);          
            return rounded;
        }
        protected void btnGuardar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                string idExpedienteLicencia = GetSessionPage.ExpedienteLic(SessionPage.PageLicAdm);
                Dictionary<string, string>[] gridData = JSON.Deserialize<Dictionary<string, string>[]>(e.ExtraParams["GridData"]);
                var dataInfo = JSON.Deserialize<Dictionary<string, string>>(e.ExtraParams["prmValues"]);

                DetalleCosto objDetCosto = DetalleCosto.GetEditableRoot(idExpedienteLicencia);
                objDetCosto.Delete();
                objDetCosto.Save();

                int i = 0;
                while (i < gridData.Length)
                {
                    var RowInfo = gridData[i];
                    objDetCosto = DetalleCosto.NewEditableRoot();
                    objDetCosto.Detalle = RowInfo["Detalle"];
                    objDetCosto.Valor   = GetValInfo(RowInfo["Valor"]);
                    objDetCosto.ExpedienteLicenciamiento = idExpedienteLicencia;
                    objDetCosto.Id = Guid.NewGuid();
                    objDetCosto.Save();
                    i += 1;
                }
               
                ExpedienteLicenciamiento objExpLic = ExpedienteLicenciamiento.GetEditableRoot(Guid.Parse(idExpedienteLicencia));
                objExpLic.Tasa = GetValInfo(dataInfo["Tasa"]);
                objExpLic.Inspeccion = GetValInfo(dataInfo["Inspecion"]);
                objExpLic.Seguimiento = GetValInfo(dataInfo["Seguimiento"]);
                objExpLic.ValorPagar = GetValInfo(dataInfo["Total"]);
                objExpLic.Save();

                X.Msg.Show(new MessageBoxConfig
                {
                    Buttons = MessageBox.Button.OK,
                    Icon = MessageBox.Icon.INFO,
                    Title = "Información",
                    Message =  "Valores agregados"
                });

                
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
       
    }
}